package com.the_last.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.the_last.pojo.dto.SysPermissionDTO;
import com.the_last.pojo.po.SysPermission;
import com.the_last.utils.Result;

import java.util.List;

public interface ISysPermissionService extends IService<SysPermission> {
    
    /**
     * 分页获取权限列表
     *
     * @param page 分页参数
     * @param queryDTO 查询条件
     * @return 权限分页数据
     */
    Result<Page<SysPermission>> getPermissionList(Page<SysPermission> page, SysPermissionDTO queryDTO);
    
    /**
     * 获取用户权限列表
     *
     * @param userId 用户ID
     * @return 权限列表
     */
    Result<List<SysPermission>> getPermissionsByUserId(Long userId);
    
    /**
     * 获取角色权限列表
     *
     * @param roleId 角色ID
     * @return 权限列表
     */
    Result<List<SysPermission>> getPermissionsByRoleId(Long roleId);
    
    /**
     * 新增权限
     *
     * @param permission 权限信息
     * @return 操作结果
     */
    Result<Void> addPermission(SysPermission permission);
    
    /**
     * 更新权限
     *
     * @param permission 权限信息
     * @return 操作结果
     */
    Result<Void> updatePermission(SysPermission permission);
    
    /**
     * 删除权限
     *
     * @param id 权限ID
     * @return 操作结果
     */
    Result<Void> deletePermission(Long id);
    
    /**
     * 获取用户权限代码列表（用于Spring Security）
     *
     * @param userId 用户ID
     * @return 权限代码列表
     */
    List<String> getUserPermissionCodes(Long userId);
    
}